# Author: lvin

# 列表list
# names = ["lvin","R1SE","xixi","CC"]
# print(names[0])

users_list = ["lvin","R1SE","CC"]
password_list = [123956,56789,5397]
print(users_list[0])
print(password_list[0])

# 列表的嵌套
info_list = [["lvin",12356],["R1SE",56689],["CC",5357]]
print(info_list[1])


# list的查询(切片)

names = ["Mike","Mary","Jan","Jack"]
# 知识点 slices (切片) 数值是指 values 在 list 的位置
# 1.正向取值
# list 列表取值 : 号右边的值取不到， 例如 [1:3] 3的位置取不到
print(names[1:3])
print(names[0:2])
# 如果 左侧的值为 0 ，即从 0 开始取值， 0 可以省略不写
print(names[:2])

# 2.反向取值
# list 取值 : 号 右边的值取不到 例如： [-3:-1] -1的位置取不到
print(names[-3:-1])
# 注意：渠道最后一个值不能为 0 ，省略不写即可
print(names[-1])

# 列表的开始，结束，步长值 letters[start:stop:step]
# 如果没有指定开始值，则默认为0；如果没有指定结束指，则取列表允许的最大值； 如果没有指定步长值，则默认步长为1.

num = [1,2,3,4,5,6,7,8,9]
# 对比 range
print(num[:6:2]) # 完整为[0:6:2] 0省略不写，然后是[0:6] 取 1,2,3,4,5 又[:2] 间隔为2
print(list(range(10)))


names = ["lvin","CC","R1SE","xixi"]
print(names)
print(names[:])         # 获取所有值
print(names[0],names[2])  # 取出某一个值
print(names[1:3])  # 切片 取出中间一些连续的值（还是列表） 取第一和第二个值
print(names[-1])   # 切片 取出最后一个值
print(names[-3:-1])  # 切片 从后往前取出一些值（还是列表） 取倒数第三和第二个值
print(names[-3:])  # 切片 取后面三个值
print(names[:2])   # 切片 取前面两个值，即“0”可以省略


# list的增，删，改

names = ["Mi","Cary","Ja","Jc"]
print(names)
names.append("lex")  # list增：append增加数据，观察增加的位置。
print(names)
names.insert(1,"Dan")  # list增：insert指定位置增加数据
print(names)
names[3] = "vin"  # list改：直接找到列表中某个值，然后赋新值
print(names)
names.remove("vin")  # list删：remove指定某个数据进行删除
print(names)
del names[1]  # list删： del指定[x]的某个数据位置进行删除
print(names)
names.pop()  # list删：Remove and return item at index (default last) 不指定默认删除最后一个值
print(names)
names.pop(1)  # lsit删：如果加上指定位置，names.pop(1)<==> del names[1]
print(names)

# list的复制
# 1  .copy()
first = [1,2,3,4,5]
second = first
print(second)
second.append(6)
print(first)
third = second.copy()
third.append(7)
print(second,third)

# 2.切片
a = [1,2,3,4]
b = a[:]
print(a,b)
b.append(5)
print(a,b)
